============================================================================================================================
Modification Title: Member Referrals

Version: 1.0

Modification Description:
This modification will add the ability for members to choose who referred them to the forum on registation.
This modification will add the ability for members to choose who referred them to the forum in user control panel.
This modification will add the ability for super administrators to choose who referred a member to the forum in editprofile.
This modification will prevent a member with a uid of 1 from selecting who referred them for logical reasons.
This modification will prevent someone from selecting there own username as referred by.

Compatibility: XMB 1.9.8 SP3

Developed By: John Briggs

Copyright: Copyright:  2010 XMB Garage. All Rights Reserved.

Contributors: FunForum, Adam Clarke

InstallNote: Before Installing this modification you should back up all files and databases related to this modification.

License Note: This modification is released under the GPL v3 License. A copy is provided with this software package.

Author Note:
You downloaded this modification from XMBGarage.com, the #1 source for XMB related downloads.
Please visit http://www.xmbgarage.com/ for support.
============================================================================================================================
=======
Step 1:
=======
====================================
Go To Administration Panel --> Insert Raw SQL
====================================

Upload provided file named "SQL.txt" & click "Submit Changes" button.

============================================================================================================================
=======
Step 2:
=======
=======================
Edit File: lang/English.lang.php
=======================
==========
Find Code:
==========

?>

===============
Add Code Above:
===============

// Member Referrals Mod Begin
$lang['referrals'] = "Number of referrals:";
$lang['referredby'] = "Referred by:";
$lang['referred'] = "Members referred by this user:";
$lang['referralnoone'] = "No One";
// Member Referrals Mod End

============================================================================================================================
=======
Step 3:
=======
==============
Edit File: cp.php
==============
==========
Find Code:
==========

                $db->query("DELETE FROM ".X_PREFIX."members WHERE uid='$delete'");

===============
Add Code Below:
===============

                // Member Referrals Mod Begin
                $db->query("UPDATE ".X_PREFIX."members SET referredby='-1' WHERE referredby='$delete'");
                // Member Referrals Mod End

============================================================================================================================
=======
Step 4:
=======
===================
Edit File: editprofile.php
===================
==========
Find Code:
==========

'memcp_profile_avatarlist',

===============
Add Code Below:
===============

'memcp_profile_referral',

==========
Find Code:
==========

    eval('echo stripslashes("'.template('admintool_editprofile').'");');

===============
Add Code Above:
===============

    // Member Referrals Mod Begin
    $referralblock = '';
    if ($member['uid'] != 1 And $member['referredby'] == 0) {
        $referlist = array();
        $referlist[] = '<select name="refer">';
        $referlist[] = '<option value="0" '.$selHTML.'>'.$lang['referralnoone'].'</option>';
        $query = $db->query("SELECT uid, username FROM ".X_PREFIX."members ORDER BY username ASC");
        while($refinfo = $db->fetch_array($query)) {
            if ($refinfo['username'] != $user) {
                $referlist[] = '<option value="'.intval($refinfo['uid']).'">'.$refinfo['username'].'</option>';
            }
        }
        $referlist[] = '</select>';
        $referlist = implode("\n", $referlist);
        $db->free_result($query);
        eval('$referralblock = "'.template('memcp_profile_referral').'";');
    }
    // Member Referrals Mod End

==========
Find Code:
==========

    $db->query("UPDATE ".X_PREFIX."members

===============
Add Code Above:
===============

    // Member Referrals Mod Begin
    $refsql = '';
    $refer = formInt('refer');
    if ($refer != 0) {
        $refsql = "referredby='$refer',";
    }
    // Member Referrals ModEnd

==========
Find Code:
==========

    $db->query("UPDATE ".X_PREFIX."members SET email='$email',

==================
Replace Code With:
==================

    $db->query("UPDATE ".X_PREFIX."members SET $refsql email='$email',

============================================================================================================================
=======
Step 5:
=======
=================
Edit File: member.php
=================
==========
Find Code:
==========

                $regoptional = '';
                if ($SETTINGS['regoptional'] == 'on') {
                    eval('$regoptional = "'.template('member_reg_optional').'";');
                }

===============
Add Code Above:
===============

                // Member Referrals Mod Begin
                $referlist = array();
                $referlist[] = '<select name="refer">';
                $referlist[] = '<option value="0" '.$selHTML.'>'.$lang['referralnoone'].'</option>';
                $query = $db->query("SELECT uid, username FROM ".X_PREFIX."members ORDER BY username ASC");
                if ($db->num_rows($query) != 0) {
                    while($refinfo = $db->fetch_array($query)) {
                        $referlist[] = '<option value="'.intval($refinfo['uid']).'">'.$refinfo['username'].'</option>';
                    }
                }
                $referlist[] = '</select>';
                $referlist = implode("\n", $referlist);
                $db->free_result($query);
                // Member Referrals Mod End

=======================
Find Code On 2nd Occassion:
=======================

                $db->query("INSERT INTO ".X_PREFIX."members (username

============================
Add Code Below On 2nd Occassion:
============================

                // Member Referrals Mod Begin
                $refer = formInt('refer');
                $db->query("UPDATE ".X_PREFIX."members SET referredby='$refer' WHERE username='$username'");
                // Member Referrals Mod End

==========
Find Code:
==========

                $memberinfo['location'] = censor($memberinfo['location']);

===============
Add Code Above:
===============

                // Member Referrals Mod Begin
                if ($memberinfo['referredby'] == 0) {
                    $referredby = $lang['referralnoone'];
                } else if ($memberinfo['referredby'] != 0) {
                    $query = $db->query("SELECT username FROM ".X_PREFIX."members WHERE uid='".(int)$memberinfo['referredby']."'");
                    $referredby = $db->result($query, 0);
                    $referredby = '<a href="member.php?action=viewpro&amp;member='.recodeOut($referredby).'">'.$referredby.'</a>';
                }

                $referredlist = '';
                $referredcount = 0;
                $comma = '';
                $query = $db->query("SELECT username FROM ".X_PREFIX."members WHERE referredby='".(int)$memberinfo['uid']."'");
                if ($db->num_rows($query) != 0) {
                    while($refmem = $db->fetch_array($query)) {
                        if ($refmem['username'] != '') {
                            $referredlist .= $comma.'<a href="member.php?action=viewpro&amp;member='.recodeOut($refmem['username']).'">'.$refmem['username'].'</a>';
                            $referredcount++;
                            $comma = ', ';
                        }
                    }
                } else {
                    $referredlist = $lang['referralnoone'];
                }
                // Member Referrals Mod End

============================================================================================================================
=======
Step 6:
=======
=================
Edit File: memcp.php
=================
==========
Find Code:
==========

'memcp_profile_avatarurl',

===============
Add Code Below:
===============

'memcp_profile_referral',

==========
Find Code:
==========

        eval('echo stripslashes("'.template('memcp_profile').'");');

===============
Add Code Above:
===============

        // Member Referrals Mod Begin
        $referralblock = '';
        if ($member['uid'] != 1 And $member['referredby'] == 0) {
            $referlist = array();
            $referlist[] = '<select name="refer">';
            $referlist[] = '<option value="0" '.$selHTML.'>'.$lang['referralnoone'].'</option>';
            $query = $db->query("SELECT uid, username FROM ".X_PREFIX."members ORDER BY username ASC");
            while($refinfo = $db->fetch_array($query)) {
                if ($refinfo['username'] != $xmbuser) {
                    $referlist[] = '<option value="'.intval($refinfo['uid']).'">'.$refinfo['username'].'</option>';
                }
            }
            $referlist[] = '</select>';
            $referlist = implode("\n", $referlist);
            $db->free_result($query);
            eval('$referralblock = "'.template('memcp_profile_referral').'";');
        }
        // Member Referrals Mod End

==========
Find Code:
==========

        $db->query("UPDATE ".X_PREFIX."members SET $pwtxt

===============
Add Code Above:
===============

        // Member Referrals Mod Begin
        $refsql = '';
        $refer = formInt('refer');
        if ($refer != 0) {
            $refsql = "referredby='$refer',";
        }
        // Member Referrals End

==========
Find Code:
==========

        $db->query("UPDATE ".X_PREFIX."members SET $pwtxt

================
Replace Code With:
================

        $db->query("UPDATE ".X_PREFIX."members SET $refsql $pwtxt

============================================================================================================================
=======
Step 7:
=======
===============================
Go To Administration Panel --> Templates
===============================
===========================
Edit Template: admintool_editprofile
===========================
==========
Find Code:
==========

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%">$lang[textsite]</td>
<td bgcolor="$altbg2"><input type="text" name="newsite" size="25" value="$member[site]" /></td>
</tr>

===============
Add Code Above:
===============

$referralblock

============================================================================================================================
=======
Step 8:
=======
===============================
Go To Administration Panel --> Templates
===============================
=======================
Edit Template: memcp_profile
=======================
==========
Find Code:
==========

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%">$lang[textsite]</td>
<td bgcolor="$altbg2"><input type="text" name="newsite" size="25" value="$member[site]" /></td>
</tr>

===============
Add Code Above:
===============

$referralblock

============================================================================================================================
=======
Step 9:
=======
===============================
Go To Administration Panel --> Templates
===============================
=======================
Edit Template: member_profile
=======================
==========
Find Code:
==========

<tr class="tablerow">
<td bgcolor="$altbg1" valign="top">$lang[textprofforumma]</td>
<td bgcolor="$altbg2">$topforum</td>
</tr>

===============
Add Code Above:
===============

<tr class="tablerow">
<td bgcolor="$altbg1" valign="top" width="22%">$lang[referredby]</td>
<td bgcolor="$altbg2">$referredby</td>
</tr>

<tr class="tablerow">
<td bgcolor="$altbg1" valign="top" width="22%">$lang[referrals]</td>
<td bgcolor="$altbg2">$referredcount</td>
</tr>

<tr class="tablerow">
<td bgcolor="$altbg1" valign="top" width="22%">$lang[referred]</td>
<td bgcolor="$altbg2">$referredlist</td>
</tr>

============================================================================================================================
========
Step 10:
========
===============================
Go To Administration Panel --> Templates
===============================
===========================
Edit Template: member_reg_optional
===========================
==========
Find Code:
==========

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%">$lang[textsite]</td>
<td bgcolor="$altbg2"><input type="text" name="site" size="25" value="" /></td>
</tr>

===============
Add Code Above:
===============

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%">$lang[referredby]</td>
<td bgcolor="$altbg2">$referlist</td>
</tr>

============================================================================================================================
========
Step 11:
========
===============================
Go To Administration Panel --> Templates
===============================
==============================
Create Template: memcp_profile_referral
==============================
=========================
Add Code And Submit Changes:
=========================

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%">$lang[referredby]</td>
<td bgcolor="$altbg2">$referlist</td>
</tr>

============================================================================================================================
========
Step 12:
========

Upload all edited files regarding this hack to there proper locations.

============================================================================================================================
Enjoy!